package com.example.mapper;

import com.example.pojo.User;
import com.example.pojo.UserQueryParam;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Set;

@Mapper
public interface UserMapper {
    /**
     * 根据用户名查询用户
     * @param username
     * @return
     */
    Integer getUsername(String username);
    /**
     * 插入用户
     * @param user
     * @return
     */
    Long insertUser(User user);
    /**
     * 根据用户名和密码查询用户
     * @param user
     * @return
     */
    User SelectByUsernameAndPassword(User user);
    /**
     * 根据用户id查询用户
     * @param currentUserId
     * @return
     */
    List<User> getByUserId(Long currentUserId);
    /**
     * 根据查询参数查询用户
     * @param userQueryParam
     * @return
     */
    long countByQueryParam(UserQueryParam userQueryParam);
    /**
     * 分页查询用户
     * @param userQueryParam
     * @return
     */
    List<User> pageQueryWithRoleIds(@Param("roleIds") List<Integer> roleIds, @Param("userQueryParam") UserQueryParam userQueryParam);
    /**
     * 根据用户id查询用户
     * @param pagedUserIds
     * @param userQueryParam
     * @return
     */
    List<User> queryUsersByIds(@Param("userIds") List<Long> pagedUserIds, @Param("userQueryParam") UserQueryParam userQueryParam);
    /**
     * 根据用户id查询用户
     * @param userId
     * @return
     */
    User getUserByuserId(Long userId);

    void updateUser(@Param("userId") Long userId,@Param("user") User user);
    @Select("select count(0) from users where user_id=#{userId}")
    Integer getById(@Param("userId") Long userId);
}
